package schema;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 74646
 * Date: 2022-05-12
 * Time: 22:46
 */

// 懒汉模式
class Singleton2{
    // 1.不会立即初始化实例
    private static Singleton2 instance = null;
    // 2.把构造方法设置为 private
    private Singleton2(){
    }
    // 3.提供一个方法来获取单例模式
    // 只有当真正需要用到这个实例的时候，才会真正去创建这个实例

    /**
     * 此时线程不安全是发生在 instance 被初始化之前的，未初始化的时候调用 getinstance 就可能同时涉及到读和修改
     * 一旦 instance 被初始化之后(值就不是null) if 条件就不成立了，getinstance 方法就剩下两个读操作（if，return）也就线程安全了
     * @return
     */
    public static Singleton2 getInstance(){
        if(instance==null){
            instance = new Singleton2();
        }
        return instance;
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Singleton2 instance = Singleton2.getInstance();
    }
}
